package main

import (
	"fmt"
	"regexp"
)

const text = "My email is ccmouse@gmail.com"
const text1 = `
My email is ccmouse@gmail.com
email1 is abc@def.org
email2 is   kkk@qq.com
email3 is ddd@abc.com.cn
`

func main() {
	// re, err := regexp.Compile("ccmouse@gmail.com") 一般用于参数是输入的情况，写死正则一般不会出错
	// re := regexp.MustCompile(".+@.+\\..+") // \.会被go语言识别为转移字符，类型\n，正则表达式里要写两个\\
	// re := regexp.MustCompile(`.+@.+\..+`) // ``间的字符串会直接传入，不用写两个\\
	re := regexp.MustCompile(`[a-zA-Z0-9]+@[a-zA-Z0-9.]+\.[a-zA-Z0-9]+`) // 不能匹配到前面的字符
	match := re.FindString(text)
	fmt.Println(match)

	match1 := re.FindAllString(text1, -1)
	fmt.Println(match1)

	// 正则表达式提取字段
	re2 := regexp.MustCompile(`([a-zA-Z0-9]+)@([a-zA-Z0-9]+)\.([a-zA-Z0-9.]+)`) // 给要提取的字段加括号
	match2 := re2.FindAllStringSubmatch(text1, -1)
	fmt.Println(match2)
	for _, m := range match2 {
		fmt.Println(m)
	}
}
